﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using itau.im.entidade;
using itau.im.dado;
using EnterpriseLibraryWrapper;
using System.ServiceModel;

namespace itau.im.negocio
{
    public class ConsultaUnificadaBS : IConsultaUnificadaBS
    {
        public DadosCadastroCurva ObterDadosCadastroCurva()
        {
            IMesaDB mesaDAO;
            ICurvaDAO curvaDAO;
            IMoedaDAO moedaDAO;
            ICalendarioDAO calendarioDAO;
            IControleAcessoDAO controleAcessoDAO;

            DadosCadastroCurva dadosCadastroCurva;

            try
            {
                dadosCadastroCurva = new DadosCadastroCurva();

                //Instância o objeto DAO
                mesaDAO = DaoFactory.getMesaDAO();
                curvaDAO = DaoFactory.getCurvaDAO();
                moedaDAO = DaoFactory.getMoedaDAO();
                calendarioDAO = DaoFactory.getCalendarioDAO();
                controleAcessoDAO = DaoFactory.getControleAcessoDAO();
                
                //Consultas
                dadosCadastroCurva.Curvas = curvaDAO.ObterCurvas().ToList();
                dadosCadastroCurva.Situacoes = curvaDAO.ObterSituacoes().ToList();
                dadosCadastroCurva.TiposTaxa = curvaDAO.ObterTiposTaxa().ToList();
                dadosCadastroCurva.TiposCurva = curvaDAO.ObterTiposCurva().ToList();
                dadosCadastroCurva.TiposPrazo = curvaDAO.ObterTiposPrazo().ToList();
                dadosCadastroCurva.ModelosCalculo = curvaDAO.ObterModelosCalculo().ToList();
                dadosCadastroCurva.ModalidadesCurva = curvaDAO.ObterModalidadesCurva().ToList();
                dadosCadastroCurva.TiposEntradaDado = curvaDAO.ObterTiposEntradaDado().ToList();
                dadosCadastroCurva.CategoriasMercado = curvaDAO.ObterCategoriasMercado().ToList();
                dadosCadastroCurva.MetodosAntepolacao = curvaDAO.ObterMetodosAntepolacao().ToList();
                dadosCadastroCurva.MetodosExtrapolacao = curvaDAO.ObterMetodosExtrapolacao().ToList();
                dadosCadastroCurva.MetodosInterpolacao = curvaDAO.ObterMetodosInterpolacao().ToList();
                dadosCadastroCurva.VerticesInterpolacao = curvaDAO.ObterVerticesInterpolacao().ToList();

                dadosCadastroCurva.Moedas = moedaDAO.ObterMoedas().ToList();
                dadosCadastroCurva.SubMesas = mesaDAO.ObterSubMesas(1).ToList(); //Verificar parâmetro
                dadosCadastroCurva.PracasCalendario = calendarioDAO.ObterPracasCalendario().ToList();
                //dadosCadastroCurva.GruposNotificacao = controleAcessoDAO.ObterGruposAcesso().ToList();
                
                return dadosCadastroCurva;
            }
            catch (DadosException ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosNegocios");
            }
            catch (NegociosException ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosNegocios");
            }
            catch (Exception ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosNegocios");
            }
            finally
            {
                dadosCadastroCurva = null;
            }

            //Retorna consulta
            return dadosCadastroCurva;
        }
    }
}
